package main

import (
	"fmt"
	"unicode"
)

func main(){
	var passwd string
	var com [] string
	score := 2
	fmt.Println("请输入密码：")
	fmt.Scan(&passwd)
	if f1(passwd) > 8{
		score += 1
	}else{
		com = append(com, "密码长度小于8")
	}
	if f2(passwd) >= 3{
		score += 1
	}else{
		com = append(com, "少于以上三种字符")
	}
	if f3(passwd) == 0{
		score += 1
	}else{
		com = append(com, "不能有三个以上重复的子串")
	}
	fmt.Printf("您的密码等级为 %d", score)
	fmt.Println(com)
}
//长度是否超过8
func f1(passwd string) int{
	return len(passwd)  //返回长度用于判断
}
// 包括大、小写字母，数字其它符号以上四种至少三种
func f2(passwd string) int{
	c1, c2, c3, c4 := 0, 0, 0, 0
	for _, i := range(passwd){
		if unicode.IsUpper(i){
			c1 = 1
		}
	}
	for _, i := range(passwd){
		if unicode.IsLower(i){
			c2 = 1
		}
	}
	for _, i := range(passwd){
		if unicode.IsDigit(i){
			c3 = 1
		}
	}
	for _, i := range(passwd){
		if unicode.IsPunct(i){
			c4 = 1
		}
	}
	return c1 + c2 + c3 + c4
}
// 验证密码中是否有字符重复三次以上
func f3(passwd string)  int {
	var flag int
	for i := 0; i < len(passwd)-6;i++{
		fmt.Println(passwd[i:i+3])
		fmt.Println(passwd[i+3:i+6])
		if passwd[i:i+3] == passwd[i+3:i+6] {
			flag = 1
		}else{
			flag = 0
		}
	}
	return flag
}